/**
 * 当Post返回的数组或对象不为空时，再调用JsonUtil
 */
package cn.com.gridinfo.sooc.utils.versionHttp;

import android.app.AlertDialog;
import android.content.Context;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class JsonUtil extends com.jeremy.arad.utils.JsonUtil {
    public static AlertDialog.Builder bl;

    /**
     * 转换成json数组
     *
     * @param jsonStr
     * @return
     */
    public static JSONArray parseArray(String jsonStr) {
        JSONArray jsonArr = null;
        int length1 = jsonStr.length();
        int index = jsonStr.indexOf("[");
        int index2 = jsonStr.lastIndexOf("]") + 1;
        String str = jsonStr.substring(index, index2);
        int length = str.length();
        try {
            jsonArr = new JSONArray(str);
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return jsonArr;
    }

    /**
     * 转化成json对象
     *
     * @param jsonStr
     * @return
     */
    public static JSONObject parseObject(String jsonStr) {
        JSONObject jsonObj = null;
        JSONObject object = null;
        int length1 = jsonStr.length();
        if (jsonStr.contains("{") && jsonStr.contains("}")) {
            int index = jsonStr.indexOf("{");
            int index2 = jsonStr.lastIndexOf("}") + 1;
            String str = jsonStr.substring(index, index2);
            int length = str.length();
            try {
                jsonObj = new JSONObject(str);

            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
        return jsonObj;
    }

    /**
     * 转换成json对象，检查是否符合接口输出标准
     *
     * @param jsonStr
     * @return
     */
    public static JSONObject newParseObject(String jsonStr) {
        JSONObject jsonObj = null;
        JSONObject object = null;
        if (jsonStr.equals(Post.DATAERROR) || jsonStr.equals(Post.SERVICEERROR)) {
            object = null;
        } else {
            int length1 = jsonStr.length();
            if (jsonStr.contains("{") && jsonStr.contains("}")) {
                int index = jsonStr.indexOf("{");
                int index2 = jsonStr.lastIndexOf("}") + 1;
                String str = jsonStr.substring(index, index2);
                int length = str.length();
                try {
                    jsonObj = new JSONObject(str);
                    if (jsonObj.has("status") && jsonObj.has("info")) {
                        object = jsonObj;
                    } else {
                        object = null;
                    }

                } catch (JSONException e) {
                    e.printStackTrace();
                }
            } else {
                object = null;
            }
        }
        return object;
    }

    /**
     * 转换成json对象，检查是否符合接口输出标准
     *
     * @param jsonStr
     * @return
     */
    public static JSONObject newParseObject(String jsonStr, Context context) {
        JSONObject jsonObj = null;
        JSONObject object = null;
        if (jsonStr.equals(Post.DATAERROR) || jsonStr.equals(Post.SERVICEERROR)) {
            object = null;
        } else {
            int length1 = jsonStr.length();
            if (jsonStr.contains("{") && jsonStr.contains("}")) {
                int index = jsonStr.indexOf("{");
                int index2 = jsonStr.lastIndexOf("}") + 1;
                String str = jsonStr.substring(index, index2);
                int length = str.length();
                try {
                    jsonObj = new JSONObject(str);
                    if (jsonObj.has("status") && jsonObj.has("info")) {
                        object = jsonObj;
                    } else {
                        object = null;
                    }

                } catch (JSONException e) {
                    e.printStackTrace();
                }
            } else {
                object = null;
            }
        }
        return object;
    }

    /**
     * 将json对象转换成Map
     *
     * @param jsonObject json对象
     * @return Map对象
     * @throws JSONException
     * @author 李洋
     */
    @SuppressWarnings("unchecked")
    public static Map<String, String> toMap(JSONObject jsonObject)
            throws JSONException {
        Map<String, String> result = new HashMap<String, String>();
        Iterator<String> iterator = jsonObject.keys();
        String key = null;
        String value = null;
        while (iterator.hasNext()) {
            key = iterator.next();
            if (jsonObject.getString(key).equals("null") || jsonObject.getString(key).equals("")
                    || jsonObject.getString(key) == null) {
                value = "";
            } else {
                value = jsonObject.getString(key);
            }
            result.put(key, value);
        }
        return result;
    }

    public static Map<String, Object> toObjectMap(JSONObject jsonObject)
            throws JSONException {
        Map<String, Object> result = new HashMap<String, Object>();
        Iterator<String> iterator = jsonObject.keys();
        String key = null;
        String value = null;
        while (iterator.hasNext()) {
            key = iterator.next();
            if (jsonObject.getString(key).equals("")
                    || jsonObject.getString(key) == null) {
                value = "";
            } else {
                value = jsonObject.getString(key);
            }
            result.put(key, value);
        }
        return result;
    }


    /**
     *
     * map转换json.
     * <br>详细说明
     * @param map 集合
     * @return
     * @return String json字符串
     * @throws
     * @author slj
     */
    public static String mapToJson(Map<String, String> map) {
        Set<String> keys = map.keySet();
        String key = "";
        Object value = null;
        StringBuffer jsonBuffer = new StringBuffer();
        jsonBuffer.append("{");
        for (Iterator<String> it = keys.iterator(); it.hasNext();) {
            key = (String) it.next();
            value = map.get(key);
            jsonBuffer.append("\""+key + "\":" +"\""+ value+"\"");
            if (it.hasNext()) {
                jsonBuffer.append(",");
            }
        }
        jsonBuffer.append("}");
        return jsonBuffer.toString();
    }

}